\Verb+void *memchr(const void *ptr, int c, size_t n);+\\
zwraca 
\begin{itemize}
\item
wskaźnik do pierwszego wystąpienia
znaku {\tt c} ({\tt int} jest przekształcany do {\tt unsigned char})
wśród początkowych{\tt n} znaków obiektu {\tt s}
\item zwraca {\tt NULL} w przeciwnym przypadku
\end{itemize}

Plik {\sf memset.c}.
\begin{lstC}
#ifdef __cplusplus
#include <cstring>
#include <cstdio>
#else
#include <string.h>
#include <stdio.h>
#endif

void znajdzPierwszy(void *ptr, int c, int n) {
  void *found;
  found = memchr(ptr, c, n);
  if (found) {
    printf("%d pod indeksem %d", c, (int) found - (int) ptr);
  } else {
    printf("%d nie znaleziono", c);
  }
  printf(" (w pierwszych %d znakach)\n", n);
}

int main () {
  char buf[] = { 10, 20, 30, 40, 50 };
  znajdzPierwszy(buf, 30, 2);
  znajdzPierwszy(buf, 30, 3);
  znajdzPierwszy(buf, 77, 5);
  return 0;
}
\end{lstC}

Uruchomienie. 
\begin{lstV}
30 nie znaleziono (w pierwszych 2 znakach)
30 pod indeksem 2 (w pierwszych 3 znakach)
77 nie znaleziono (w pierwszych 5 znakach)
\end{lstV}